package xin.marcher.wind.process.service;

import xin.marcher.wind.process.domain.request.TradePlatformProcessNodeImplRequest;
import xin.marcher.wind.process.domain.request.TradePlatformProcessNodeRequest;
import xin.marcher.wind.process.domain.vo.TradePlatformProcessNodeImplVO;
import xin.marcher.wind.process.domain.vo.TradePlatformProcessNodeVO;

import java.util.List;

/**
 * 
 * @version 1.0
 */
public interface TradePlatformProcessNodeService {

    /**
     * 给某个流程新增流程节点定义
     * @param tradePlatformProcessNodeRequest
     * @return
     */
    TradePlatformProcessNodeVO addProcessNode(TradePlatformProcessNodeRequest tradePlatformProcessNodeRequest);

    /**
     * 编辑某个流程节点定义
     * @param id 流程节点ID
     * @param tradePlatformProcessNodeRequest
     * @return
     */
    TradePlatformProcessNodeVO editProcessNode(Long id, TradePlatformProcessNodeRequest tradePlatformProcessNodeRequest);

    /**
     * 查看某个流程下的流程节点定义
     * @return
     */
    List<TradePlatformProcessNodeVO> listProcessNode(Long processId);

    /**
     * 删除某个流程下的流程节点定义
     * @param id
     * @return
     */
    Boolean removeProcessNode(Long id);

    /**
     * 流程节点定义增加实现
     * @param tradePlatformProcessNodeImplRequest
     * @return
     */
    TradePlatformProcessNodeImplVO addProcessNodeImpl(TradePlatformProcessNodeImplRequest tradePlatformProcessNodeImplRequest);

    /**
     * 编辑流程节点定义实现
     * @param id
     * @param tradePlatformProcessNodeImplRequest
     * @return
     */
    TradePlatformProcessNodeImplVO editProcessNodeImpl(Long id, TradePlatformProcessNodeImplRequest tradePlatformProcessNodeImplRequest);

    /**
     * 查看流程节点定义的实现
     * @param processNodeId
     * @return
     */
    List<TradePlatformProcessNodeImplVO> listProcessNodeImpl(Long processNodeId);

    /**
     * 移除流程节点定义下的某个实现
     * @param id
     * @return
     */
    Boolean removeProcessNodeImpl(Long id);

}